<?php

namespace app\home\controller;

use app\common\controller\DingApi;
use app\company\service\DataService;
use library\Controller;
use think\Db;

use function Qiniu\json_decode;

/**
 * 钉钉员工考勤列表管理
 * Class User
 * @package app\worker\controller
 */
class DingAttendance extends Controller
{
    /**
     * 获取最近7天的考勤列表
     * @auth true
     */
    public function index()
    {
        //上传打卡记录
        // $data = [
        //     'userid' => "2840320412690582",
        //     // 'device_name' => '全民送达总部大楼',
        //     // 'device_id' => 'abc123456',
        //     'sourceType' => 'USER',
        //     'user_check_time' => 163663287600
        // ];
        // $dingApi = new DingApi();
        // $res = $dingApi->record_upload($data);
        // halt($res);

        //发送工作通知
        // $data = [
        //     'userid_list' => "2840320412690582",
        //     'msg' => [
        //         'msgtype' => 'link',
        //         'link' => [
        //             "messageUrl"=> "http://114.55.29.146/admin.html#/home/plan/index.html?spm=m-68-78-73",
        //             "picUrl"=>"@lALPDfYH05yuuJHNAUfNAUc",
        //             "title"=> "赤伶社区团购平台",
        //             "text"=> date('Y-m-d H:i:s').',有人提交了新的运营计划，请及时上系统进行审核!'
        //         ]
        //     ]
        // ];
        // $dingApi = new DingApi();
        // $res = $dingApi->asyncsend_v2($data);
        // halt($res);
        
        $userid = request()->get('userid');
        if(empty($userid)){
            $this->error('缺少参数userid');
        }
        $checkDateFrom = date('Y-m-d', mktime(00, 00, 00, date('m'), date('d') - 7, date('Y'))) . ' 00:00:00';
        $checkDateTo = date('Y-m-d') . ' 00:00:00';
        $data = [
            'checkDateFrom' => $checkDateFrom,
            'checkDateTo' => $checkDateTo,
            'userIds' => [$userid],
        ];
        $dingApi = new DingApi();
        $res = $dingApi->attendance_listRecord($data);
        if ($res['errcode'] == 0) {
            /**
             * userAddress 用户打卡地址
             * deviceId 打卡设备ID
             * locationMethod 定位方法
             * isLegal 是否合法 Y：合法 N：不合法
             * userCheckTime 实际打卡时间
             * baseCheckTime 计算迟到和早退，基准时间；也可作为排班打卡时间
             * timeResult 打卡结果：
                    Normal：正常
                    Early：早退
                    Late：迟到
                    SeriousLate：严重迟到
                    Absenteeism：旷工迟到
                    NotSigned：未打卡
             * locationResult 位置结果：
                    Normal：范围内
                    Outside：范围外
                    NotSigned：未打卡
             * checkType 考勤类型：
                    OnDuty：上班
                    OffDuty：下班
             * sourceType 数据来源：
                    ATM：考勤机打卡（指纹/人脸打卡）
                    BEACON：IBeacon
                    DING_ATM：钉钉考勤机（考勤机蓝牙打卡）
                    USER：用户打卡
                    BOSS：老板改签
                    APPROVE：审批系统
                    SYSTEM：考勤系统
                    AUTO_CHECK：自动打卡
             * workDate 工作日
             * invalidRecordType 异常信息类型：
                    Security：安全相关原因
                    Other：其他原因
             * gmtCreate  打卡记录创建时间
             * invalidRecordMsg 对应的invalidRecordType异常信息的具体描述
             * gmtModified 打卡记录修改时间
             * outsideRemark 打卡备注
             */
            $this->list = $res['recordresult'];
        } else {
            $this->error($res['errmsg']);
        }
        $this->fetch();
    }
}
